<template>
  <!-- 底部部分 -->
  <footer class="footer">
    <span class="todo-count">剩余<strong>{{ totalCount }}</strong></span>
    <!-- 观察规律得出结论: 在 template 中所有数据 / 方法都不需要加 this -->
    <!-- template 中不需要加 this, 尤其是事件中, 不允许加 this -->
    <ul @click="$emit('changeType', type)" class="filters">
      <li>
        <!-- 当用户点击全部按钮时, 将 type 设置为 all -->
        <a @click="type = 'all'" :class="{ selected: type === 'all' }" href="#/">全部</a>
      </li>
      <li>
        <!-- 当用户点击进行中按钮时, 将 type 设置为 no -->
        <a @click="type = 'no'" :class="{ selected: type === 'no' }" href="#/active">进行中</a>
      </li>
      <li>
        <!-- 当用户点击已完成按钮时, 将 type 设置为 yes -->
        <a @click="type = 'yes'" :class="{ selected: type === 'yes' }" href="#/completed">已完成</a>
      </li>
    </ul>
    <button @click="hClear" v-show="showClear" class="clear-completed">清除已完成</button>
  </footer>
</template>

<script>
export default {
  props: {
    list: {
      type: Array,
      required: true
    }
  },
  data() {
    return {
      // 取值范围: all / yes / no
      type: 'all'
    }
  },
  methods: {
    hClear() {
      // 子传父
      this.$emit('clearDone')
    }
  },
  computed: {
    totalCount() {
      return this.list.length
    },
    showClear() {
      // 使用 some 来判断所有元素的 isDone, 只要有一个是 true 就返回 true
      return this.list.some(item => item.isDone)
    }
  }
}
</script>

<style>

</style>